package com.ruoyi.project.pro.size.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.exception.cms.CmsNotDeleteException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.project.pro.manager.mapper.ProManagerMapper;
import com.ruoyi.project.pro.size.domain.ProSize;
import com.ruoyi.project.pro.size.mapper.SizeMapper;
import com.ruoyi.project.pro.size.service.ISizeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: zhizun
 * @author: Mrs.ye
 * @create: 2020-09-17 14:21
 * @description:
 **/
@Service
public class SizeServiceImpl implements ISizeService {

    @Autowired
    private SizeMapper sizeMapper;
    @Autowired
    private ProManagerMapper proManagerMapper;
    /**
     * 分页查询产品规格
     * @return
     */
    @Override
    public List<ProSize> selectSize(ProSize proSize) {
        return sizeMapper.selectSizeList(proSize);
    }


    /**
     * 校验岗位名称是否唯一
     *
     * @param proSize 产品规格信息
     * @return 结果
     * 根据公告的名字到数据库中查询公告
     * 将数据库中公告的id传进来的公告id进行对比
     */
    @Override
    public String checkSizeNameUnique(ProSize proSize) {
        Long sizeId = StringUtils.isNull(proSize.getSizeId()) ? -1L : proSize.getSizeId();
        ProSize info = sizeMapper.checkSizeNameUnique(proSize.getSizeName());
        //如果根据公告名称查询出来了公告,并且查询出来的公告id和原本的id不同,表示同一个公告名称有不同的id,
        //反过来就是说不同的id相同的公告名称,这样公告名称就不唯一了
        if (StringUtils.isNotNull(info) && info.getSizeId().longValue() != sizeId.longValue())
        {
            return UserConstants.TYPE_CODE_NOT_UNIQUE;
        }
        return UserConstants.TYPE_CODE_UNIQUE;
    }

    /**
     * 新增产品规格
     * @param proSize
     * @return
     */
    @Override
    public int insertProSize(ProSize proSize) {
        proSize.setCreateBy(ShiroUtils.getLoginName());
        return sizeMapper.insertProSize(proSize);
    }

    /**
     * 通过id查询产品规格
     * @param sizeId
     * @return
     */
    @Override
    public ProSize selectSizeById(Long sizeId) {
        ProSize proSize = sizeMapper.selectSizeById(sizeId);
        System.out.println(proSize);

        return proSize;
    }

    /**
     * 修改产品规格
     * @param proSize
     * @return
     */

    @Override
    public int updateSize(ProSize proSize) {
        proSize.setUpdateBy(ShiroUtils.getLoginName());
        return sizeMapper.updateSize(proSize);
    }

    @Override
    public int removeProSizeById(Long[] ids) {
        boolean flag=true;

        for (Long id : ids) {
            Integer proSizes=  proManagerMapper.selectProManagerBySizeId(id);
            if(proSizes>0){
                flag=false;
                break;
            }
        }
        if(!flag){
            throw new CmsNotDeleteException("规格还有规格内容,不能删除");
        }
        return sizeMapper.removeProSizeById(ids);
    }
}
